package com.rainng.coursesystem.module.task.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.rainng.coursesystem.base.api.dto.BaseIdsReqDTO;
import com.rainng.coursesystem.base.api.dto.PagingReqDTO;
import com.rainng.coursesystem.model.excelvo.TaskExcelVo;
import com.rainng.coursesystem.model.vo.response.ResultVO;
import com.rainng.coursesystem.module.task.dto.request.GroupTaskExportReqDTO;
import com.rainng.coursesystem.module.task.dto.request.TaskDetailDTO;
import com.rainng.coursesystem.module.task.dto.request.TaskExportReqDTO;
import com.rainng.coursesystem.module.task.dto.request.TaskQueryReqDTO;
import com.rainng.coursesystem.module.task.dto.response.CarProjectResDTO;
import com.rainng.coursesystem.module.task.dto.response.CodeWhiteListResDTO;
import com.rainng.coursesystem.module.task.dto.response.TaskPagingResDTO;
import com.rainng.coursesystem.module.task.entity.Task;
import com.rainng.coursesystem.model.entity.CodeWhiteEntity;
import com.rainng.coursesystem.module.task.dto.request.CodeWhiteListDTO;
import com.rainng.coursesystem.module.task.dto.request.TaskCarDTO;
import com.rainng.coursesystem.module.task.dto.response.TaskCarResDTO;
import com.rainng.coursesystem.module.task.entity.projectEntity;
import com.rainng.coursesystem.module.task.dto.request.StRuleListDTO;
import com.rainng.coursesystem.module.task.dto.request.TaskConfigDTO;
import java.util.List;


public interface TaskService extends IService<Task> {

    ResultVO save(TaskDetailDTO reqDto);

    ResultVO setTaskImportant(TaskDetailDTO reqDto);
    ResultVO saveCodeWhiteList(CodeWhiteEntity reqDto);
    ResultVO updateCodeWhiteList(CodeWhiteEntity reqDto);
    ResultVO deleteCodeWhiteList(CodeWhiteEntity reqDto);
    IPage<CodeWhiteListResDTO> getCodeWhiteList(PagingReqDTO<CodeWhiteListDTO> reqDTO);


    IPage<TaskPagingResDTO> paging(PagingReqDTO<TaskQueryReqDTO> reqDTO);
    IPage<TaskPagingResDTO> taskChangePaging(PagingReqDTO<TaskQueryReqDTO> reqDTO);

    TaskPagingResDTO detail(String id);

    List<TaskExportReqDTO> getTaskListByIds(BaseIdsReqDTO reqDTO);

    List<TaskExportReqDTO> getAllTask();

    List<GroupTaskExportReqDTO> getTaskByAdmin();

    //批量导入接口
    void saveTasks(List<TaskExcelVo> taskExcelVos);

    int deleteTaskChangeByFatherIds(List<String> ids);

    ResultVO saveTaskCar(TaskCarDTO reqDto);
    ResultVO saveTaskConfig(TaskConfigDTO reqDto);
    ResultVO updateTaskConfig(TaskConfigDTO reqDto);
    TaskConfigDTO getTaskConfig(String taskCode);
    ResultVO updateTaskCar(TaskCarDTO reqDto);
    List<TaskCarResDTO> getTaskCarByTaskCode(String applyNum);
    TaskCarResDTO getTaskCarDetail(String configIndex, String taskCode);
    List<TaskCarResDTO> getCarList(String taskCode);
    //获取vin对应的配置项目
    List<CarProjectResDTO> getCarprojectList(String taskCode,String vin);
    //根据汽车vetype和pr_num获取具体信息
    projectEntity getProject(String veType,Integer prjNum);
    List<TaskCarResDTO> getCarListByVIN(String vin, String taskCode);
    IPage<StRuleListDTO> getStRuleList(PagingReqDTO<StRuleListDTO> reqDTO);
    ResultVO saveStRuleList(StRuleListDTO reqDto);
    ResultVO deleteStRule(String id);
    ResultVO updateStRule(StRuleListDTO reqDto);

}
